package com.bite.common.config;

import com.bite.common.utils.EncapsulatedRedisTemplate;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.core.StringRedisTemplate;

@Configuration
public class RedisConfig {

    @ConditionalOnProperty(prefix = "spring.data.redis", name = "host")
    @Bean("encapsulatedRedisTemplate")
    public EncapsulatedRedisTemplate encapsulatedRedisTemplate(StringRedisTemplate redisTemplate) {
        return new EncapsulatedRedisTemplate(redisTemplate);
    }
}
/**
 * 如果需要对象存储 + JSON序列化存储对象
 * 进行如下配置，将其作为参数传入构造，后续根据配置执行
 */
//    @Bean("ObjectRedisTemplate")
//    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
//        RedisTemplate<String, Object> template = new RedisTemplate<>();
//
//        // 设置连接工厂
//        template.setConnectionFactory(factory);
//
//        // 设置键序列化方式
//        template.setKeySerializer(new StringRedisSerializer());
//        template.setHashKeySerializer(new StringRedisSerializer());
//
//        // 设置值序列化方式
//        GenericJackson2JsonRedisSerializer jsonSerializer = new GenericJackson2JsonRedisSerializer();
//        template.setValueSerializer(jsonSerializer);
//        template.setHashValueSerializer(jsonSerializer);
//
//        return template;
//    }